A software application may have multiple software components or software layers (may also be referred to as software libraries) that communicate or exchange data with each other. For example, code executing in one layer may call functions implemented in another layer, or code executing in one layer may pass parameters or data to another layer. Because of the modularized nature of such an environment, a security vulnerability can exist at the exposed interface between the software layers. For instance, a man-in-the-middle application can eavesdrop on the data being passed between the software layers to obtain sensitive information, or unauthorized code can directly invoke functions implemented in a shared software layer and obtain sensitive data processed by that shared software layer.
Embodiments of the present invention address these and other problems, individually and collectively.